// 示例 1:
// 输入: nums = [2, 3, -2, 4]
// 输出: 6
// 解释: 子数组[2, 3] 有最大乘积 6。
// 示例 2:
// 输入: nums = [-2, 0, -1]
// 输出: 0
// 解释: 结果不能为 2, 因为[-2, -1] 不是子数组。

nums = [2, 3, -2, 4]

var maxProduct = function (nums) {
    // 这题思路和最大连续子数组和相似
    // 那道题只需维护最大值即可
    // 这题因为是乘积，所以要维护一个最大值和一个最小值，因为最小值乘一个负数就会变为最大值
    let len = nums.length
    let min = nums[0]
    let max = nums[0]
    let res = nums[0]
    for (let i = 1; i < len; i++) {
        let temp = min
        min = Math.min(nums[i], min * nums[i], max * nums[i])
        max = Math.max(nums[i], temp * nums[i], max * nums[i])
        res = Math.max(res, max)
    }
    return res
};

console.log(maxProduct(nums));
